package cn.iocoder.yudao.module.station.controller.admin.fillrecord.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 充装记录 Base VO，提供给添加、修改、详细的子 VO 使用
 * 如果子 VO 存在差异的字段，请不要添加到这里，影响 Swagger 文档生成
 */
@Data
public class FillRecordBaseVO {

    @Schema(description = "气站ID", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "气站ID不能为空")
    private Long stationIdcho;

    @Schema(description = "充装站点编码")
    private String stationCode;

    @Schema(description = "唯一编码")
    private String barcode;

    @Schema(description = "钢瓶编码")
    private String cylinderCode;

    @Schema(description = "载体编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "载体编码不能为空")
    private String chipCode;

    @Schema(description = "枪号")
    private Integer gunSn;

    @Schema(description = "电子秤号")
    private Integer scaleSn;

    @Schema(description = "充装日期", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "充装日期不能为空")
    private LocalDate fillDate;

    @Schema(description = "充装时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "充装时间不能为空")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime fillTime;

    @Schema(description = "充装持续时间（秒）")
    private Integer fillDuration;

    @Schema(description = "钢瓶类型编码")
    private Long cylinderTypeCode;

    @Schema(description = "钢瓶类型名称", example = "王五")
    private String cylinderTypeName;

    @Schema(description = "钢瓶规格")
    private String gasCylinderSpeci;

    @Schema(description = "充装介质编码")
    private Long fillMediumCode;

    @Schema(description = "充装介质名称", example = "赵六")
    private String fillMediumName;

    @Schema(description = "钢瓶类型编码")
    private Long cylinderModelCode;

    @Schema(description = "钢瓶类型名称", example = "王五")
    private String cylinderModelName;

    @Schema(description = "钢瓶制造日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime makeTime;

    @Schema(description = "钢瓶制造厂家编码")
    private Long makeFactoryCode;

    @Schema(description = "钢瓶制造厂家名称", example = "芋艿")
    private String makeFactoryName;

    @Schema(description = "最近一次检测时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime recentCheckTime;

    @Schema(description = "下次检验时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime nextCheckTime;

    @Schema(description = "初始重量")
    private Double initialWeight;

    @Schema(description = "充装重量")
    private Double fillWeight;

    @Schema(description = "总重")
    private Double fullWeight;

    @Schema(description = "复秤设备号")
    private Integer reweightDeviceCode;

    @Schema(description = "复秤重量")
    private Double reweightWeight;

    @Schema(description = "数据来源", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "数据来源不能为空")
    private Integer dataSource;

    @Schema(description = "充装工编号")
    private String operateUserCode;

    @Schema(description = "充装工姓名", example = "赵六")
    private String operateUserName;

    @Schema(description = "充装环境温度")
    private Double envirTempera;

    @Schema(description = "充装检查记录ID", example = "29666")
    private Long fillCheckRecordId;

    @Schema(description = "充装前检查状态", example = "1")
    private Integer beforeCheckStatus;

    @Schema(description = "充装前检查人")
    private String beforeCheckUser;

    @Schema(description = "充装前检查时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime beforeCheckTime;

    @Schema(description = "充装后检查状态", example = "2")
    private Integer afterCheckStatus;

    @Schema(description = "充装后检查人")
    private String afterCheckUser;

    @Schema(description = "充装后检查时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime afterCheckTime;

    @Schema(description = "充装状态", example = "1")
    private Integer fillStatus;

}
